package implementacion;

import java.util.List;

import javax.persistence.EntityManager;

import clasesAuxiliares.RutaFichero;

import excepciones.NoElementoEnConjunto;

public class InfoRutas {

	private EntityManager em;

	public InfoRutas(EntityManager em) {
		this.em = em;
	}

	public void anyadirInfoRuta(InfoRuta infoRuta) {
		if (infoRuta != null) {
			Ruta ruta = em.find(Ruta.class, infoRuta.getRuta().getIdRuta());
			Usuario usuario = em.find(Usuario.class, infoRuta.getUsuario()
					.getEmail());
			if (ruta != null && usuario != null)
				em.persist(infoRuta);
			else
				throw new IllegalArgumentException(
						"No existe el Usuario que realiza la ruta o la Ruta realizada");
		} else
			throw new IllegalArgumentException("Informacion de ruta no valida");
	}

	public void eliminarInfoRuta(long idInfoRuta) {
		if (idInfoRuta >= 1) {
			InfoRuta infRuta = em.find(InfoRuta.class, idInfoRuta);
			if (infRuta != null)
				em.remove(infRuta);
			else
				throw new NoElementoEnConjunto(
						"No existe dicha informacion de Ruta en la base de datos");
		} else
			throw new IllegalArgumentException("Informacion de ruta no valida");
	}


	public RutaFichero verInfoConFichero(long idInfo) {
		String query = "SELECT infoRuta FROM InfoRuta infoRuta WHERE infoRuta.idInfoRuta='"
				+ idInfo + "'";
		InfoRuta infoRuta = em.createQuery(query, InfoRuta.class)
				.getSingleResult();
		RutaFichero rutaFichero = new RutaFichero(infoRuta);
		return rutaFichero;
	}

	public List<InfoRuta> verMisInfoRutas(String emailUsuario) {
		String query = "SELECT infoRuta FROM InfoRuta infoRuta WHERE infoRuta.usuario='"
				+ emailUsuario + "'";
		List<InfoRuta> infoRutas = em.createQuery(query, InfoRuta.class)
				.getResultList();
		return infoRutas;
	}
}
